置顶通知
由于评论从畅言云评迁移到waline,导致评论数据丢失。非本人删除,各位大佬见谅!!!
由于评论从畅言云评迁移到waline,导致评论数据丢失。非本人删除,各位大佬见谅!!!
上篇博客介绍了 CPU异常分析的工具和方法。本文将介绍如何定位 CPU 耗时。
如果不同的类型具有相同的行为,那么我们就可以定义一个特征,然后为这些类型实现该特征。定义特征是把一些方法组合在一起,目的是定义一个实现某些目标所必需的行为的集合。
例如,我们现在有文章 Post 和微博 Weibo 两种内容载体,而我们想对相应的内容进行总结,也就是无论是文章内容,还是微博内容,都可以在某个时间点进行总结,那么总结这个行为就是共享的,因此可以用特征来定义:
1 | pub trait Summary { |
特征只定义行为看起来是什么样的,而不定义行为具体是怎么样的。因此我们需要为实现特征的类型,定义行为具体是怎么样的。
1 | pub struct Post { |
指针是一个包含了内存地址的变量,该内存地址引用或者指向了另外的数据。
在 Rust 中,最常见的指针类型是引用,引用通过 & 符号表示。不同于其它语言,引用在 Rust 中被赋予了更深层次的含义,那就是:借用其它变量的值。引用本身很简单,除了指向某个值外并没有其它的功能,也不会造成性能上的额外损耗,因此是 Rust 中使用最多的指针类型。
而智能指针则不然,它虽然也号称指针,但是它是一个复杂的家伙:通过比引用更复杂的数据结构,包含比引用更多的信息,例如元数据,当前长度,最大可用长度等。智能指针往往是基于结构体实现,它与我们自定义的结构体最大的区别在于它实现了 Deref 和 Drop 特征:
而 Box 指针是最简单的智能指针。本文将介绍 Box 指针以及 Deref 和 Drop 特征。
本文总结了如何使用 Java 客户端操作 HDFS,以及一些注意点。
Rust 为了解决内存安全问题,引入了所有权系统。
所有的程序都必须和计算机内存打交道,如何从内存中申请空间来存放程序的运行内容,如何在不需要的时候释放这些空间,成了重中之重,也是所有编程语言设计的难点之一。在计算机语言不断演变过程中,出现了三种流派:
Rust 选择了第三种,最妙的是,这种检查只发生在编译期,因此对于程序运行期,不会有任何性能上的损失。
本文记录一些分析 CPU 性能问题的工具&方法。
本篇是论文的中文简单翻译
物化视图可以大大缩短查询处理时间,特别是对于大型表的聚合查询。要释放这种潜力,查询优化器必须知道如何以及何时利用物化视图。本文提出了一种快速且可扩展的算法,用于确定是否可以从物化视图中计算查询的部分或全部,并描述了如何将其纳入基于转换的优化器中。当前版本处理由selections、joins和group by组成的视图。优化仍然完全基于成本,也就是说,启发式规则不会选择单个“最佳”重写,而是生成多个重写,优化器以正常方式选择最佳替代方案。实验结果表明,该算法在Microsoft SQL Server上实现了良好的性能和可扩展性。优化时间随着视图数的增加而缓慢增加,但即使视图数达到1000次,优化耗时仍然很低。
关键字:
本文是数据库系统概念第六章节的读书笔记。
查询语言是用户用来从数据库中请求信息的语言。查询语言可以分为过程化和非过程化的。在过程化语言中用户指导系统对数据库执行一系列操作以计算出结果。在非过程化语言中,用户只需要描述所需信息,而不用给出具体过程。
实际上使用的查询语言既包含过程化的成分,又包含非过程化的成分。在一些"纯"查询语言中,关系代数是过程化的,而元组关系演算和域关系演算是非过程的。
在关系模型中,关系指表。表的一行是元组。表中一列是属性。域是属性的取值范围。
一些SQL构造(如ORDER BY)在许多情况下不会影响查询结果,并且会产生影响性能的负面影响(查询中的每个ORDER BY子句都代表一个排序执行计划)。如果用户无意中在没有效果的地方使用ORDER BY,可能会导致严重的性能下降和资源浪费。
sql规范(ISO 9075 Part 2)中说明:
一个
<query expression>
可以包含一个可选的<order by clause>
。<query expression>
z中行的顺序仅由<query expression>
直接包含的<order by clause>
指定。
上述规范意味着,查询引擎可以自由地忽略任何不适合上下文的ORDER BY子句。